#ifndef  __UART_DEBUG_H__
#define  __UART_DEBUG_H__

#include <stdint.h>

#define TIMESTAMP_MASK			((uint32_t)(1<<5))
#define BLINK_MASK				((uint32_t)(1<<4))
#define COLOR_MASK				((uint32_t)(0x0F<<0))

#define COLOR_RED				(1)
#define COLOR_GREEN				(2)
#define COLOR_YELLOW			(3)
#define COLOR_BLUE				(4)
#define COLOR_PURPLE			(5)
#define COLOR_CYAN				(6)
#define COLOR_WHITE				(7)

//#define UART_BUF_SIZE			10
#define ERR_BUF_SIZE			50
#define MSTATE_BUF_SIZE			50

#if defined(USER_DEBUG)


#define UART_Debug_EN 		1



#else

#define UART_Debug_EN 		0


#endif

extern volatile uint32_t sysTimeTickMs;

void putM2state(void);
void putM1state(void);
void putError(void);
void printLoop(void);
void printSystemState(void);
void myPrintfX(uint32_t disp,const char *fmt,...);
void TxString(char *str);
void disp_Title(void);
void TxByte(unsigned char ch);
void UART_Debug_Init(void);
void print_x(uint32_t uData,int num);


#define log_i(x, ...)	myPrintfX( TIMESTAMP_MASK,x, ## __VA_ARGS__)
#define log_e(x, ...)  	myPrintfX( COLOR_RED | TIMESTAMP_MASK,x, ## __VA_ARGS__)			// 红色
#define log_d(x, ...)  	myPrintfX( COLOR_GREEN | TIMESTAMP_MASK,x, ## __VA_ARGS__)
#define log_v(x, ...)  	myPrintfX(COLOR_PURPLE | TIMESTAMP_MASK,x , ## __VA_ARGS__)			// 黄色
#define log_w(x, ...)  	myPrintfX(COLOR_YELLOW | TIMESTAMP_MASK,x , ## __VA_ARGS__)			// 黄色


#define r_printf(x, ...)  	myPrintfX( COLOR_RED,x, ## __VA_ARGS__)			// 红色
#define g_printf(x, ...)  	myPrintfX( COLOR_GREEN,x, ## __VA_ARGS__)			// 绿色
#define y_printf(x, ...)  	myPrintfX(COLOR_YELLOW ,x , ## __VA_ARGS__)			// 黄色
#define b_printf(x, ...)  	myPrintfX(COLOR_BLUE,x , ## __VA_ARGS__)			// 蓝色
#define p_printf(x, ...)  	myPrintfX(COLOR_PURPLE,x , ## __VA_ARGS__)			// 紫色
#define c_printf(x, ...)  	myPrintfX(COLOR_CYAN ,x , ## __VA_ARGS__)			// 青色
#define w_printf(x, ...)  	myPrintfX(COLOR_WHITE,x , ## __VA_ARGS__)			// 白色
#define r_f_printf(x, ...)  myPrintfX(COLOR_RED | TIMESTAMP_MASK | BLINK_MASK,x, ## __VA_ARGS__)	// 红色闪烁
#define g_f_printf(x, ...)  myPrintfX(COLOR_GREEN | TIMESTAMP_MASK | BLINK_MASK,x, ## __VA_ARGS__)	// 绿色闪烁
#define y_f_printf(x, ...)  myPrintfX(COLOR_YELLOW | TIMESTAMP_MASK | BLINK_MASK,x, ## __VA_ARGS__)	// 绿色闪烁




#define	Product_Name		"YaoBuAnMo" 





#define	Company_Name		"MFL"


#endif

